package com.fll.codeworld.enumtest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Enum根据code/name获取枚举对象、根据code获取name、根据name获取code。
 *
 * @author fff
 */
public enum BorrowStatusEnum {
    /**
     * 借基差还款状态
     */
    IN_USE("IN_USE", "使用中"),
    OVERDUE("OVERDUE", "已超期"),
    DEDUCTION("DEDUCTION", "抵扣中"),
    FINISH("FINISH", "已还款");
    /**
     * 状态
     */
    private final String code;
    /**
     * 名称
     */
    private final String name;

    BorrowStatusEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * 根据code查找
     *
     * @param code 枚举code
     * @return 枚举对象
     */
    public static BorrowStatusEnum findEnumByCode(String code) {
        for (BorrowStatusEnum statusEnum : values()) {
            if (statusEnum.getCode().equals(code)) {
                //如果需要直接返回name则更改返回类型为String,return statusEnum.name;
                return statusEnum;
            }
        }
        return null;
    }

    /**
     * 根据name查找
     *
     * @param name 枚举name
     * @return 枚举对象
     */
    public static BorrowStatusEnum findEnumByName(String name) {
        for (BorrowStatusEnum statusEnum : values()) {
            if (statusEnum.getName().equals(name)) {
                //如果需要直接返回code则更改返回类型为String,return statusEnum.code;
                return statusEnum;
            }
        }
        return null;
    }

    /**
     * 转为数据
     *
     * @return 枚举对象数组
     */
    public static List<Map<String, String>> toList() {
        List<Map<String, String>> list = new ArrayList<>();
        for (BorrowStatusEnum item : values()) {
            Map<String, String> map = new HashMap<>();
            map.put("code", item.getCode());
            map.put("name", item.getName());
            list.add(map);
        }
        return list;
    }

    public String getName() {
        return name;
    }

    public String getCode() {
        return code;
    }
}
